# [DNS](https://www.youtube.com/watch?v=9FQ8cHrFMbo&list=PL5FMLPRj1j6IChoB7nBKYNjCNQ-DBnaq7&index=4&ab_channel=%D0%94%D0%BC%D0%B8%D1%82%D1%80%D0%B8%D0%B9%D0%91%D0%B0%D1%87%D0%B8%D0%BB%D0%BE)

## [Настройка DNS на компьютере с Windows](https://www.comss.ru/page.php?id=754)

## Что такое DNS-зоны?
В этой статье мы рассматриваем лишь вариант «один — один IP-адрес». На самом деле, ситуация может быть и сложнее. Так, с определенным доменным именем может быть связано несколько ресурсов — сайт и почтовый сервер. У этих ресурсов вполне могут быть разные IP-адреса, что дает возможность повысить надежность и эффективность работы сайта или почтовой системы. Есть у сайтов и поддомены, IP-адреса которых тоже могут быть разными.

Вся эта информация о связи сайта, поддоменов, почтовой системы хранится в специальном файле на DNS-сервере. Его содержимое называется DNS-зона. Файл содержит следующие типы записей:

### А
 — адрес веб-ресурса, который привязан к конкретному имени домена.

(address record/запись адреса) отображают имя хоста (доменное имя) на адрес IPv4. Для каждого сетевого интерфейса машины должна быть сделана одна A-запись. Например, следующая запись отображает доменное имя k-max.name. в IPv4 адрес хоста 81.177.139.65 (поле NAME — 

            k-max.name., поле TTL — 86400, поле CLASS — IN, поле DATA — 81.177.139.65):

### AAAA (IPv6 address record)
 аналогична записи A, но для IPv6.            
### MX
 — адрес почтового сервера.

 (mail exchange) — указывает хосты для доставки почты, адресованной домену. При этом поле NAME указывает домен назначения, поля TTL, CLASS — стандартное значение, поле TYPE принимает значение MX, а поле DATA указывает приоритет и через пробел - доменное имя хоста, ответственного за прием почты. Например, следующая запись показывает, что для домена k-max.name направлять почту сначала на mx.k-max.name, затем на mx2.k-max.name, если с mx.k-max.name возникли какие-то проблемы. При этом, для обоих MX хостов должны быть соответствующие A-записи:

    k-max.name.             17790   IN      MX      10 mx.k-max.name.
    k-max.name.             17790   IN      MX      20 mx2.k-max.name.
### CNAME
 — чаще всего этот тип записи используется для подключения поддомена.

 (canonical name record/каноническая запись имени (псевдоним)) — отображает алиас на реальное имя (для перенаправления на другое имя), например, следующая запись задает алиас ftp для хоста www.k-max.name.:

            ftp             86400   IN      CNAME       www.k-max.name.
### NS
 — адрес DNS-сервера, который отвечает за содержимое других ресурсных записей.

 (name server/сервер имён) указывает на DNS-сервер, обслуживающий данный домен. Вернее будет сказать — указывают сервера, на которые делегирован данный домен. Если записи NS относятся к серверам имен для текущей зоны, доменная система имен их практически не использует. Они просто поясняют, как организована зона и какие машины играют ключевую роль в обеспечении сервиса имен. Например, зону name. обслуживают следующие NS:

    name.                   5772    IN      NS      l6.nstld.com.
    name.                   5772    IN      NS      m6.nstld.com.
    name.                   5772    IN      NS      c6.nstld.com.
    name.                   5772    IN      NS      j6.nstld.com.

зону k-max.name обслуживают:

    k-max.name.             1577    IN      NS      ns2.jino.ru.
    k-max.name.             1577    IN      NS      ns1.jino.ru.
### TXT
 — любая текстовая информация о доменном имени.
### SPF
 — данные с указанием списка серверов, которые входят в список доверенных для отправки писем от имени указанного домена.
### SOA
 — исходная запись зоны, в которой указаны сведения о сервере и которая содержит шаблонную информацию о доменном имени.

 (Start of Authority/начальная запись зоны) — описывает основные/начальные настройки зоны, можно сказать, определяет зону ответственности данного сервера. Для каждой зоны должна существовать только одна запись SOA и она должна быть первая. Поле Name содержит имя домена/зоны, поля TTL, CLASS — стандартное значение, поле TYPE принимает значение SOA, а поле DATA состоит из нескольких значений, разделенных пробелами: имя главного DNS (Primary Name Server), адрес администратора зоны, далее в скобках — серийный номер файла зоны (Serial number). При каждом внесении изменений в файл зоны данное значение необходимо увеличивать, это указывает вторичным серверам, что зона изменена, и что им необходимо обновить у себя зону. Далее — значения таймеров (Refresh — указывает, как часто вторичные серверы должны опрашивать первичный, чтобы узнать, не увеличился ли серийный номер зоны, Retry — время ожидания после неудачной попытки опроса, Expire — максимальное время, в течение которого вторичный сервер может использовать информацию о полученной зоне, Minimum TTL — минимальное время, в течение которого данные остаются в кэше вторичного сервера). Ниже в примере приведено 2 одинаковые записи SOA (хотя вторая и записана в несколько строк), но они одинаковы по значению и формат записи второй более понятен в силу его структурированности:

    k-max.name.             86400   IN      SOA     ns1.jino.ru. hostmaster.jino.ru. 2011032003 28800 7200 604800 86400
    k-max.name.             86400   IN      SOA     ns1.jino.ru. hostmaster.jino.ru. (
                                                    2011032003 ; serial (серийный номер)
                                                    28800 ; refresh (обновление)
                                                    7200 ; retry (повторная попытка)
                                                    604800 ; expire (срок годности)
                                                    86400) ; minimum TTL (минимум)

### SRV 
(server selection) — указывают на сервера, обеспечивающие работу тех или иных служб в данном домене (например  Jabber и Active Directory).


## Клиенты DNS (resolver)

Как же программы на конечных машинах знают куда и в каком виде посылать запросы DNS? Они этого не знают. Для разрешения имен и IP адресов клиентскими приложениями используется библиотека Resolver. Это не какое-то специальное приложение, это функциональность системы (ядра). Т.о. приложения посылают системные вызовы gethostbyname(2) и gethostbyaddr(2), а ядро уже на основании настроек в файле /etc/nsswitch.conf определяет по какому пути ему далее действовать. Данный файл определяет какие сервисы (будь то файл /etc/hosts или DNS) и в каком порядке использовать. В ранних версиях библиотеки Linux — libc, использовался файл `/etc/host.conf`. Вот фрагмент файла, который нас интересует:

    root@DNS:~# cat /etc/nsswitch.conf
    ......
    hosts:          files dns
    networks:       files

    Две строки данного фрагмента указывают ядру производить преобразование имен хостов в IP (строка hosts: files dns) сначала из файла hosts, затем силами DNS, а так же преобразование имен сетей в IP (строка networks: files) с помощью файла /etc/network.Возможны так же параметры nis или nisplu, определяющие использовать Network Information System (NIS) чтобы найти адрес. Порядок, в котором перечислены сервисы, определяет последовательность их опроса.
Если согласно /etc/nsswitch.conf запрос отправляется DNS, то используются настройки из файла /etc/resolv.conf, который определяет какие серверы DNS использовать. Вот типичный пример файла `/etc/resolv.conf`:

    root@DNS:~# cat /etc/resolv.conf
    nameserver 192.168.1.1
    nameserver 192.168.1.2
    domain  examle.com

